<?php
#!/bin/bash

/**
 * User: hzbskak
 * Date: 2020/1/7 - 15:08
 */

namespace app\admin\model;

use think\Cookie;

/**
 * 后台用户表模型
 * Class BsAdminModel
 * @package app\admin\model
 */
class BsAdminModel extends CommonModel
{
    protected $table = 'bs_admin';

    /**
     * 登录方法
     * @date 2020年1月17日16:27:06
     * -------------
     * 1 根据用户名查询账号信息是否存在
     * 2 根据1的返回值来设置返回信息内容
     * 3 没有问题，验证密码
     * 4 前台有传“记住账号”的参数则把账号信息存入cookie中，没有则删除该cookie
     * 5 将账号信息写入session中
     * 6 更新账号信息
     * -------------
     * @param $data
     * @return array
     * @throws \think\Exception
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     * @throws \think\exception\PDOException
     */
    public static function login( $data)
    {
        // 查询账号信息
        $user = self::where( 'username', 'eq', $data['username'])
            ->find();
        if( !$user) // 账号是否存在
        {
            return [ 'code' => -2, 'err' => '账号不存在'];
        }

        if( $user['state'] != 1) // 账号被锁定
        {
            return [ 'code' => -3, 'err' => '账号被冻结，请联系管理员'];
        }

        if( $user['is_delete'] != 1) // 账号被删除
        {
            return [ 'code' => -4, 'err' => '账号存在风险，请联系客服'];
        }

        $entryPassword = encryptedPassword( $data['password'], $user['salt']);
        if( $entryPassword != $user['password']) // 匹配密码
        {
            return [ 'code' => -5, 'err' => '密码不正确'];
        }

        if( isset( $data['remPass'])) // 记住登录信息
        {
            cookie( 'adminLogin', $data);
        }
        else
        {
            Cookie::delete( 'adminLogin');
        }

        // 写入session
        session( 'id', $user['id']);
        session( 'user', $user);

        // 更新登录信息
        db('bs_admin')->where('id', 'eq', $user['id'])->update( [
            'login_time' => date( 'Y-m-d H:i:s', time()),
            'login_ip' => get_ip()
        ]);

        return [ 'code' => 1, 'err' => '登录成功'];
    }
































}